/*
题目：对称的二叉树
请实现一个函数，用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样，那么它是对称的。
https://leetcode.cn/problems/dui-cheng-de-er-cha-shu-lcof/
 */
public class Offer28 {
    public boolean isSymmetric(TreeNode root) {
        if (root == null) {
            return true;
        }
        return helper(root.left, root.right);
    }

    private boolean helper(TreeNode root1, TreeNode root2) {
        if (root1 == null && root2 == null) {
            return true;
        } else if (root1 == null || root2 == null) { //其中一个为空
            return false;
        } else if (root1.val != root2.val) {
            return false;
        }

        return helper(root1.left, root2.right) && helper(root1.right, root2.left);
    }
}
